package com.project.platform.mapper;

import com.project.platform.entity.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

public interface UserMapper {

  /**
   * 查询全部
   * @return
   * */
  @Select("select * from user")
  List<User> list();

  /**
   * 分页查询
   * @param query
   * @return
   * */
  List<User> queryPage(@Param("pageNum") Integer pageNum, @Param("pageSize") Integer pageSize, @Param("query") Map<String, Object> query);

  /**
   * 查询数量
   * @param query
   * @return
   * */
  int queryCount(@Param("query") Map<String, Object> query);

  /**
   * 根据用户名查询（模糊查询）
   * @param username
   * @return
   * */
  @Select("select * from user where username like concat('%', #{username}, '%')")
  List<User> selectByUsername(String username);

  /**
   * 根据用户名查询（精确查询）
   * @param username
   * @return
   * */
  @Select("select * from user where username=#{username}")
  User selectByUsernameExact(String username);

  /**
   * 根据id查询
   * @param id
   * @return
   * */
  @Select("select * from user where id=${id}")
  User selectById(Integer id);

  /**
   * 根据电话查询
   * @param tel
   * @return
   * */
  @Select("select * from user where tel=${tel}")
  User selectByTel(String tel);

  /**
   * 新增
   * @param user
   * @return
   * */
  int insert(User user);

  /**
   * 修改
   * @param user
   * @return
   * */
  void updateById(User user);

  /**
   * 删除
   * @param id
   * @return
   * */
  boolean removeByIds(List<Integer> id);
}
